diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-12-16 17:31:12 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-12-16 19:43:40 +0100 |
| commit | bb2f79e09dd4776d611e4751ede1cbb43340fba0 (patch) | |
| tree | c519128975c5e18c3657858eab2935a230a3228d /src/pages/blog/page/[number].tsx | |
| parent | bc9a120b56494d5502de9619b79594653b8fd6e6 (diff) | |
fix(build): handle Next.js errors and warnings during build
* extract Blog component from BlogPage (paginated) and extract Article
component from ArticlePage to avoid `Cannot read properties` errors due
to fallback route
* fix sitemap build (cjs not supported)
* fix eslint warnings (react/jsx-no-literals)
* update `start` script since I'm using standalone output
* update `postbuild` script since we need to copy public and static
files to standalone directory (Next.js does not handle it itself
because we should use a CDN...)
Diffstat (limited to 'src/pages/blog/page/[number].tsx')
| -rw-r--r-- | src/pages/blog/page/[number].tsx | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/pages/blog/page/[number].tsx b/src/pages/blog/page/[number].tsx index fa1123d..e524a64 100644 --- a/src/pages/blog/page/[number].tsx +++ b/src/pages/blog/page/[number].tsx @@ -3,7 +3,7 @@ import type { ParsedUrlQuery } from 'querystring'; import type { GetStaticPaths, GetStaticProps } from 'next'; import Head from 'next/head'; import { useRouter } from 'next/router'; -import { useCallback } from 'react'; +import { type FC, useCallback } from 'react'; import { useIntl } from 'react-intl'; import { getLayout, @@ -78,23 +78,12 @@ type BlogPageProps = { translation: Messages; }; -/** - * Blog index page. - */ -const BlogPage: NextPageWithLayout<BlogPageProps> = ({ +const Blog: FC<Pick<BlogPageProps, 'data' | 'lastCursor' | 'pageNumber'>> = ({ data, lastCursor, pageNumber, }) => { - useRedirection({ - isReplacing: true, - to: ROUTES.BLOG, - whenPathMatches: (path) => - path === `${ROUTES.BLOG}${PAGINATED_ROUTE_PREFIX}/1`, - }); - const intl = useIntl(); - const { isFallback } = useRouter(); const { articles, error, @@ -256,8 +245,6 @@ const BlogPage: NextPageWithLayout<BlogPageProps> = ({ [intl] ); - if (isFallback) return <LoadingPage />; - const pageUrl = `${CONFIG.url}${ROUTES.BLOG}`; return ( @@ -359,6 +346,30 @@ const BlogPage: NextPageWithLayout<BlogPageProps> = ({ ); }; +/** + * Blog index page. + */ +const BlogPage: NextPageWithLayout<BlogPageProps> = ({ + data, + lastCursor, + pageNumber, +}) => { + useRedirection({ + isReplacing: true, + to: ROUTES.BLOG, + whenPathMatches: (path) => + path === `${ROUTES.BLOG}${PAGINATED_ROUTE_PREFIX}/1`, + }); + + const { isFallback } = useRouter(); + + return isFallback ? ( + <LoadingPage /> + ) : ( + <Blog data={data} lastCursor={lastCursor} pageNumber={pageNumber} /> + ); +}; + BlogPage.getLayout = (page) => getLayout(page); type BlogPageParams = { @@ -414,7 +425,8 @@ export const getStaticPaths: GetStaticPaths = async () => { { length: totalPages }, (_, index) => index + 1 ); - const paths = pagesArray.map((number) => { + // We remove /blog/page/1 since it is redirected to /blog + const paths = pagesArray.slice(1).map((number) => { return { params: { number: `${number}` } }; }); |
